#ifndef __qyreplacedialog__
#define __qyreplacedialog__

#include <QDialog>

class QComboBox;
class QCheckBox;

/*! \class QyReplaceDialog
	\brief Диалог "Поиск и замена"

	Содержит две строки ввода (одна для искомого текста, вторая для текста на который будет заменен искомый), набор опций поиска (регулярное выражение, чувствительность к регистру, фраза целиком) и четыре кнопки:
	* Заменить - найти и заменить один раз.
	* Заменить все.
	* Заменить все в выделенном - заменяет все в выделенном фрагменте текста (все флаги кроме "чувствительность к регистру" пока игнорируются).

	QyReplaceDialog запоминает искомые слова и слова для замены, пользователь может в любой момент обратиться к истории запросов.

*/

class QyReplaceDialog : public QDialog {
	Q_OBJECT
public:
	QyReplaceDialog( QWidget * parent=0 ); //!< Стандартный диалог

	QString findText() const; //!< искомый текст
	QString replaceText() const; //!< текст на который быдет заменен искомый

public slots:
	void setFindText( const QString & str ); //!< установить искомый текст
	void setReplaceText( const QString & str ); //!< установить текст на который быдет заменен искомый

signals:
	void replaceOne( const QString & findText, const QString & replaceText, bool re, bool cs,
		bool wm ); //!< пользователь выбрал "Заменить"
	void replaceAll( const QString & findText, const QString & replaceText, bool re, bool cs,
		bool wm ); //!< пользователь выбрал "Заменить все"
	void replaceInSelection( const QString & findText, const QString & replaceText, bool re,
		bool cs, bool wm ); //!< пользователь выбрал "Заменить все в выделенном"

private slots:
	void on_replaceOneButton_clicked();
	void on_replaceAllButton_clicked();
	void on_replaceInSelectionButton_clicked();
	void on_cancelButton_clicked();

private:
	void updateComboBoxes(); // добавляет значения строк ввода в историю поиска
	void keyPressEvent( QKeyEvent * event );


	QComboBox * findTextEdit, * replaceTextEdit;
	QCheckBox * regExpBox,
		* caseSensitiveBox,
		* wordMatchesBox;

};

#endif/*__qyreplacedialog__*/
